<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>TCP 拥塞控制机制 | 技术小馆</title>
    <link href="https://cdn.staticfile.org/font-awesome/6.4.0/css/all.min.css" rel="stylesheet">
    <link href="https://cdn.staticfile.org/tailwindcss/2.2.19/tailwind.min.css" rel="stylesheet">
    <link href="https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@400;500;600;700&family=Noto+Sans+SC:wght@300;400;500;700&display=swap" rel="stylesheet">
    <style>
        body {
            font-family: 'Noto Sans SC', Tahoma, Arial, Roboto, "Droid Sans", "Helvetica Neue", "Droid Sans Fallback", "Heiti SC", "Hiragino Sans GB", Simsun, sans-serif;
            color: #333;
            line-height: 1.6;
        }
        .hero {
            background: linear-gradient(135deg, #1e3c72 0%, #2a5298 100%);
        }
        h1, h2, h3, h4, h5, h6 {
            font-family: 'Noto Serif SC', serif;
            font-weight: 600;
        }
        .dropcap:first-letter {
            float: left;
            font-size: 4rem;
            line-height: 0.8;
            margin: 0.1em 0.15em 0 0;
            color: #1e3c72;
        }
        .card {
            transition: all 0.3s ease;
            box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
        }
        .card:hover {
            transform: translateY(-5px);
            box-shadow: 0 10px 15px rgba(0, 0, 0, 0.1);
        }
        .btn {
            transition: all 0.3s ease;
        }
        .btn:hover {
            transform: translateY(-2px);
            box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
        }
        .section-title {
            position: relative;
            padding-bottom: 0.5rem;
        }
        .section-title:after {
            content: '';
            position: absolute;
            bottom: 0;
            left: 0;
            width: 60px;
            height: 3px;
            background: linear-gradient(90deg, #1e3c72, #2a5298);
        }
        .timeline-item {
            position: relative;
            padding-left: 2.5rem;
        }
        .timeline-item:before {
            content: '';
            position: absolute;
            left: 0.75rem;
            top: 0;
            height: 100%;
            width: 3px;
            background: #e2e8f0;
        }
        .timeline-dot {
            position: absolute;
            left: 0;
            top: 0;
            width: 1.5rem;
            height: 1.5rem;
            border-radius: 50%;
            background: #1e3c72;
            display: flex;
            align-items: center;
            justify-content: center;
            color: white;
            font-size: 0.75rem;
        }
        .feature-icon {
            font-size: 2rem;
            color: #1e3c72;
            margin-bottom: 1rem;
        }
    </style>
</head>
<body class="bg-gray-50">
    <!-- Hero Section -->
    <section class="hero text-white py-20 px-4 md:px-0">
        <div class="container mx-auto max-w-5xl px-4">
            <div class="flex flex-col md:flex-row items-center">
                <div class="md:w-1/2 mb-10 md:mb-0">
                    <h1 class="text-4xl md:text-5xl font-bold mb-4">TCP 拥塞控制机制</h1>
                    <p class="text-xl mb-6 opacity-90">现代网络传输的智能交通管理系统</p>
                    <p class="mb-8 text-lg">在网络流量不断增长的今天，TCP 拥塞控制机制如同数字世界的交通信号灯，确保数据包能够高效、有序地传输，避免网络瘫痪。</p>
                    <div class="flex space-x-4">
                        <a href="#overview" class="btn bg-white text-blue-800 px-6 py-3 rounded-lg font-semibold">核心原理</a>
                        <a href="#algorithms" class="btn border-2 border-white text-white px-6 py-3 rounded-lg font-semibold">算法解析</a>
                    </div>
                </div>
                <div class="md:w-1/2 flex justify-center">
                    <img src="https://cdn.nlark.com/yuque/0/2024/png/21449790/1733209862473-bd078451-eebd-46cb-b706-38fde7cb3cea.png" alt="TCP 拥塞控制示意图" class="rounded-lg shadow-2xl max-w-full h-auto">
                </div>
            </div>
        </div>
    </section>

    <!-- Overview Section -->
    <section id="overview" class="py-16 px-4">
        <div class="container mx-auto max-w-5xl">
            <div class="text-center mb-16">
                <h2 class="text-3xl font-bold mb-4">拥塞控制的概述</h2>
                <div class="w-20 h-1 bg-blue-800 mx-auto"></div>
            </div>
            
            <div class="flex flex-col md:flex-row gap-8 mb-12">
                <div class="md:w-1/2">
                    <img src="https://cdn.nlark.com/yuque/0/2024/png/21449790/1733209885673-1adfee8b-571d-49ff-a73d-2954ad275700.png" alt="拥塞控制示意图" class="rounded-lg shadow-lg w-full h-auto">
                </div>
                <div class="md:w-1/2">
                    <h3 class="text-2xl font-bold mb-4">为什么需要拥塞控制？</h3>
                    <p class="mb-4 dropcap">在现代复杂的网络中，数据传输往往经过多个路由器、交换机等网络设备。当大量用户同时发送数据时，如果发送速率超过网络承载能力，就会导致网络拥塞，引发数据包丢失、延迟增加等问题。</p>
                    <p class="mb-6">TCP 拥塞控制通过动态调整数据发送速率来适应网络状况的变化，确保网络的稳定性和高效性。</p>
                    
                    <div class="bg-blue-50 p-6 rounded-lg border-l-4 border-blue-800">
                        <h4 class="font-bold text-lg mb-2">核心原理</h4>
                        <ul class="space-y-2">
                            <li class="flex items-start">
                                <i class="fas fa-check-circle text-blue-800 mt-1 mr-2"></i>
                                <span>公平性：确保所有连接公平共享带宽</span>
                            </li>
                            <li class="flex items-start">
                                <i class="fas fa-check-circle text-blue-800 mt-1 mr-2"></i>
                                <span>避免过度拥塞：动态调整发送速率防止网络过载</span>
                            </li>
                        </ul>
                    </div>
                </div>
            </div>
            
            <div class="grid md:grid-cols-3 gap-6 mb-12">
                <div class="card bg-white p-6 rounded-lg">
                    <div class="feature-icon">
                        <i class="fas fa-tachometer-alt"></i>
                    </div>
                    <h4 class="font-bold text-xl mb-3">慢启动</h4>
                    <p>连接初期快速增加发送速率，尽快利用可用带宽，避免网络一开始就过度拥塞。</p>
                </div>
                <div class="card bg-white p-6 rounded-lg">
                    <div class="feature-icon">
                        <i class="fas fa-shield-alt"></i>
                    </div>
                    <h4 class="font-bold text-xl mb-3">拥塞避免</h4>
                    <p>当窗口大小达到阈值后，转为线性增长发送速率，避免网络过载。</p>
                </div>
                <div class="card bg-white p-6 rounded-lg">
                    <div class="feature-icon">
                        <i class="fas fa-bolt"></i>
                    </div>
                    <h4 class="font-bold text-xl mb-3">快速恢复</h4>
                    <p>检测到丢包后快速重传，并适度调整窗口大小而非完全重置。</p>
                </div>
            </div>
        </div>
    </section>

    <!-- Goals Section -->
    <section class="py-16 px-4 bg-gray-100">
        <div class="container mx-auto max-w-5xl">
            <div class="text-center mb-12">
                <h2 class="text-3xl font-bold mb-4">拥塞控制的核心目标</h2>
                <p class="text-lg text-gray-600 max-w-3xl mx-auto">TCP 拥塞控制旨在通过动态调节数据发送速率，确保网络的稳定性，避免网络发生拥塞，提高数据传输效率。</p>
            </div>
            
            <div class="grid md:grid-cols-2 gap-8 mb-8">
                <div class="bg-white p-6 rounded-lg shadow">
                    <div class="flex items-start mb-4">
                        <div class="bg-blue-100 p-3 rounded-full mr-4">
                            <i class="fas fa-network-wired text-blue-800"></i>
                        </div>
                        <div>
                            <h3 class="text-xl font-bold">避免网络过载</h3>
                            <p class="text-gray-600 mt-2">防止网络出现过度拥塞，导致丢包、延迟增大以及带宽浪费。</p>
                        </div>
                    </div>
                </div>
                <div class="bg-white p-6 rounded-lg shadow">
                    <div class="flex items-start mb-4">
                        <div class="bg-blue-100 p-3 rounded-full mr-4">
                            <i class="fas fa-balance-scale text-blue-800"></i>
                        </div>
                        <div>
                            <h3 class="text-xl font-bold">公平带宽分配</h3>
                            <p class="text-gray-600 mt-2">确保不同TCP连接在共享网络带宽时能够得到公平分配。</p>
                        </div>
                    </div>
                </div>
                <div class="bg-white p-6 rounded-lg shadow">
                    <div class="flex items-start mb-4">
                        <div class="bg-blue-100 p-3 rounded-full mr-4">
                            <i class="fas fa-chart-line text-blue-800"></i>
                        </div>
                        <div>
                            <h3 class="text-xl font-bold">最大化网络利用率</h3>
                            <p class="text-gray-600 mt-2">在确保网络稳定的前提下，尽可能多地传输数据，提高网络吞吐量。</p>
                        </div>
                    </div>
                </div>
                <div class="bg-white p-6 rounded-lg shadow">
                    <div class="flex items-start mb-4">
                        <div class="bg-blue-100 p-3 rounded-full mr-4">
                            <i class="fas fa-sync-alt text-blue-800"></i>
                        </div>
                        <div>
                            <h3 class="text-xl font-bold">减少数据丢包与重传</h3>
                            <p class="text-gray-600 mt-2">通过避免过度拥塞来减少丢包，降低重传次数，提高传输效率。</p>
                        </div>
                    </div>
                </div>
            </div>
            
            <div class="bg-white p-8 rounded-lg shadow-lg">
                <img src="https://cdn.nlark.com/yuque/0/2024/png/21449790/1733209968911-50398ff8-b94a-423f-bb74-e9ffe68ceed0.png" alt="TCP 拥塞控制目标示意图" class="rounded-lg w-full h-auto mb-6">
                <p class="text-gray-700">TCP 拥塞控制机制像是一个智能的交通管理系统，通过动态调节数据包的发送速率，确保网络这个"数字高速公路"始终保持畅通无阻。</p>
            </div>
        </div>
    </section>

    <!-- Algorithms Section -->
    <section id="algorithms" class="py-16 px-4">
        <div class="container mx-auto max-w-5xl">
            <div class="text-center mb-16">
                <h2 class="text-3xl font-bold mb-4">TCP 拥塞控制的主要算法</h2>
                <p class="text-lg text-gray-600 max-w-3xl mx-auto">TCP 通过四种基本算法实现拥塞控制：慢启动、拥塞避免、快速重传和快速恢复。</p>
            </div>
            
            <div class="grid md:grid-cols-2 gap-8 mb-12">
                <div>
                    <h3 class="text-2xl font-bold mb-6 section-title">慢启动 (Slow Start)</h3>
                    <div class="bg-blue-50 p-6 rounded-lg mb-6">
                        <h4 class="font-bold text-lg mb-2">工作原理</h4>
                        <p>连接开始时，拥塞窗口(cwnd)设置为1个MSS。每收到一个ACK，cwnd增加1个MSS，直到达到慢启动阈值(ssthresh)。</p>
                    </div>
                    <p>慢启动阶段的增长是指数级的，能够快速利用可用带宽，同时避免网络一开始就过度拥塞。</p>
                </div>
                <div>
                    <h3 class="text-2xl font-bold mb-6 section-title">拥塞避免 (Congestion Avoidance)</h3>
                    <div class="bg-blue-50 p-6 rounded-lg mb-6">
                        <h4 class="font-bold text-lg mb-2">工作原理</h4>
                        <p>当cwnd达到ssthresh后，每经过一个RTT，cwnd只增加1个MSS(线性增长)。</p>
                    </div>
                    <p>这种渐进式的增长有助于避免网络过度拥塞，保持网络的稳定运行。</p>
                </div>
            </div>
            
            <div class="grid md:grid-cols-2 gap-8 mb-12">
                <div>
                    <h3 class="text-2xl font-bold mb-6 section-title">快速重传 (Fast Retransmit)</h3>
                    <div class="bg-blue-50 p-6 rounded-lg mb-6">
                        <h4 class="font-bold text-lg mb-2">工作原理</h4>
                        <p>接收方收到乱序包时发送重复ACK。发送方收到3个重复ACK后立即重传丢失包，不必等待超时。</p>
                    </div>
                    <p>这种机制可以显著降低因丢包导致的延迟，提高网络响应速度。</p>
                </div>
                <div>
                    <h3 class="text-2xl font-bold mb-6 section-title">快速恢复 (Fast Recovery)</h3>
                    <div class="bg-blue-50 p-6 rounded-lg mb-6">
                        <h4 class="font-bold text-lg mb-2">工作原理</h4>
                        <p>当发生丢包时，ssthresh设为当前cwnd的一半，cwnd设为ssthresh + 3个MSS，然后进入拥塞避免阶段。</p>
                    </div>
                    <p>快速恢复避免了完全重置cwnd，能够使网络更快恢复正常传输状态。</p>
                </div>
            </div>
            
            <div class="bg-white p-8 rounded-lg shadow-lg mb-12">
                <h3 class="text-2xl font-bold mb-6">可视化算法流程</h3>
                <div class="mermaid">
                    graph TD
                        A[开始] --> B[慢启动阶段]
                        B -->|cwnd < ssthresh| B
                        B -->|cwnd >= ssthresh| C[拥塞避免阶段]
                        C -->|收到ACK| C
                        C -->|检测到丢包| D[快速重传]
                        D --> E[快速恢复]
                        E --> C
                </div>
            </div>
        </div>
    </section>

    <!-- Window Section -->
    <section class="py-16 px-4 bg-gray-100">
        <div class="container mx-auto max-w-5xl">
            <div class="text-center mb-16">
                <h2 class="text-3xl font-bold mb-4">拥塞窗口与慢启动门限</h2>
                <p class="text-lg text-gray-600 max-w-3xl mx-auto">在TCP拥塞控制中，拥塞窗口(cwnd)和慢启动门限(ssthresh)是两个非常重要的参数，它们共同作用于TCP连接的流量控制机制。</p>
            </div>
            
            <div class="flex flex-col md:flex-row gap-8 mb-12">
                <div class="md:w-1/2">
                    <div class="bg-white p-6 rounded-lg shadow-lg mb-6">
                        <h3 class="text-xl font-bold mb-4">拥塞窗口 (cwnd)</h3>
                        <ul class="space-y-3">
                            <li class="flex items-start">
                                <i class="fas fa-circle text-xs text-blue-800 mt-2 mr-2"></i>
                                <span>表示发送方能够发送的最大字节数</span>
                            </li>
                            <li class="flex items-start">
                                <i class="fas fa-circle text-xs text-blue-800 mt-2 mr-2"></i>
                                <span>在慢启动阶段指数增长</span>
                            </li>
                            <li class="flex items-start">
                                <i class="fas fa-circle text-xs text-blue-800 mt-2 mr-2"></i>
                                <span>在拥塞避免阶段线性增长</span>
                            </li>
                            <li class="flex items-start">
                                <i class="fas fa-circle text-xs text-blue-800 mt-2 mr-2"></i>
                                <span>发生丢包时会减少窗口大小</span>
                            </li>
                        </ul>
                    </div>
                    
                    <div class="bg-white p-6 rounded-lg shadow-lg">
                        <h3 class="text-xl font-bold mb-4">慢启动门限 (ssthresh)</h3>
                        <ul class="space-y-3">
                            <li class="flex items-start">
                                <i class="fas fa-circle text-xs text-blue-800 mt-2 mr-2"></i>
                                <span>划分慢启动和拥塞避免阶段</span>
                            </li>
                            <li class="flex items-start">
                                <i class="fas fa-circle text-xs text-blue-800 mt-2 mr-2"></i>
                                <span>初始值通常很大</span>
                            </li>
                            <li class="flex items-start">
                                <i class="fas fa-circle text-xs text-blue-800 mt-2 mr-2"></i>
                                <span>发生丢包时设为当前cwnd的一半</span>
                            </li>
                        </ul>
                    </div>
                </div>
                
                <div class="md:w-1/2">
                    <div class="bg-white p-6 rounded-lg shadow-lg h-full">
                        <h3 class="text-xl font-bold mb-4">cwnd 和 ssthresh 的关系</h3>
                        <div class="timeline-item mb-6">
                            <div class="timeline-dot">
                                <i class="fas fa-play"></i>
                            </div>
                            <div class="pl-6">
                                <h4 class="font-bold">连接初始</h4>
                                <p class="text-gray-600">cwnd设置为1-2个MSS，开始慢启动阶段</p>
                            </div>
                        </div>
                        <div class="timeline-item mb-6">
                            <div class="timeline-dot">
                                <i class="fas fa-arrow-up"></i>
                            </div>
                            <div class="pl-6">
                                <h4 class="font-bold">cwnd < ssthresh</h4>
                                <p class="text-gray-600">指数增长(慢启动阶段)</p>
                            </div>
                        </div>
                        <div class="timeline-item mb-6">
                            <div class="timeline-dot">
                                <i class="fas fa-arrow-up"></i>
                            </div>
                            <div class="pl-6">
                                <h4 class="font-bold">cwnd >= ssthresh</h4>
                                <p class="text-gray-600">线性增长(拥塞避免阶段)</p>
                            </div>
                        </div>
                        <div class="timeline-item">
                            <div class="timeline-dot">
                                <i class="fas fa-redo"></i>
                            </div>
                            <div class="pl-6">
                                <h4 class="font-bold">发生丢包</h4>
                                <p class="text-gray-600">ssthresh设为cwnd一半，cwnd重置，重新开始</p>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </section>

    <!-- Trigger Section -->
    <section class="py-16 px-4">
        <div class="container mx-auto max-w-5xl">
            <div class="text-center mb-16">
                <h2 class="text-3xl font-bold mb-4">拥塞控制的触发机制</h2>
                <p class="text-lg text-gray-600 max-w-3xl mx-auto">TCP 拥塞控制主要依赖于丢包事件、RTT变化和ssthresh调整等关键事件来决定如何调整发送端的流量。</p>
            </div>
            
            <div class="grid md:grid-cols-3 gap-6 mb-12">
                <div class="card bg-white p-6 rounded-lg">
                    <div class="text-blue-800 text-4xl mb-4">
                        <i class="fas fa-exclamation-triangle"></i>
                    </div>
                    <h3 class="text-xl font-bold mb-3">丢包事件</h3>
                    <p class="text-gray-600">通过快速重传和超时重传两种方式触发拥塞控制机制，调整cwnd和ssthresh。</p>
                </div>
                <div class="card bg-white p-6 rounded-lg">
                    <div class="text-blue-800 text-4xl mb-4">
                        <i class="fas fa-stopwatch"></i>
                    </div>
                    <h3 class="text-xl font-bold mb-3">RTT变化</h3>
                    <p class="text-gray-600">网络延迟增加可能表明网络拥塞恶化，TCP会适度减缓发送速率。</p>
                </div>
                <div class="card bg-white p-6 rounded-lg">
                    <div class="text-blue-800 text-4xl mb-4">
                        <i class="fas fa-sliders-h"></i>
                    </div>
                    <h3 class="text-xl font-bold mb-3">ssthresh调整</h3>
                    <p class="text-gray-600">丢包发生时调整ssthresh为当前cwnd的一半，cwnd重置为较小值。</p>
                </div>
            </div>
            
            <div class="bg-white p-8 rounded-lg shadow-lg">
                <h3 class="text-2xl font-bold mb-6">AIMD算法 (加性增乘性减)</h3>
                <div class="grid md:grid-cols-2 gap-8">
                    <div>
                        <h4 class="font-bold text-lg mb-3 text-green-600">增大 (加速传输)</h4>
                        <p>每经过一个RTT，cwnd增加1个MSS，表示发送速率逐渐增加。</p>
                        <div class="mt-4">
                            <div class="h-2 bg-green-200 rounded-full overflow-hidden">
                                <div class="h-full bg-green-600 rounded-full" style="width: 70%"></div>
                            </div>
                            <div class="flex justify-between text-xs text-gray-500 mt-1">
                                <span>慢启动</span>
                                <span>拥塞避免</span>
                            </div>
                        </div>
                    </div>
                    <div>
                        <h4 class="font-bold text-lg mb-3 text-red-600">缩小 (减缓传输)</h4>
                        <p>出现丢包时，cwnd减半，ssthresh设为当前cwnd的一半，减缓传输速率。</p>
                        <div class="mt-4">
                            <div class="h-2 bg-red-200 rounded-full overflow-hidden">
                                <div class="h-full bg-red-600 rounded-full" style="width: 30%"></div>
                            </div>
                            <div class="flex justify-between text-xs text-gray-500 mt-1">
                                <span>快速重传</span>
                                <span>快速恢复</span>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </section>

    <!-- Optimization Section -->
    <section class="py-16 px-4 bg-gray-100">
        <div class="container mx-auto max-w-5xl">
            <div class="text-center mb-16">
                <h2 class="text-3xl font-bold mb-4">TCP 拥塞控制的优化与扩展</h2>
                <p class="text-lg text-gray-600 max-w-3xl mx-auto">针对高带宽和低延迟的现代网络环境，许多新算法和技术应运而生，优化了TCP的拥塞控制过程。</p>
            </div>
            
            <div class="grid md:grid-cols-2 gap-8 mb-12">
                <div class="bg-white p-6 rounded-lg shadow-lg">
                    <h3 class="text-xl font-bold mb-4 flex items-center">
                        <span class="bg-blue-100 text-blue-800 p-2 rounded-lg mr-3">
                            <i class="fas fa-google"></i>
                        </span>
                        BBR算法
                    </h3>
                    <p class="mb-4">Google提出的新型拥塞控制算法，通过实时估算网络的瓶颈带宽和RTT来调整发送速率。</p>
                    <ul class="space-y-2">
                        <li class="flex items-start">
                            <i class="fas fa-check text-blue-800 mt-1 mr-2"></i>
                            <span>适合高带宽、低延迟网络</span>
                        </li>
                        <li class="flex items-start">
                            <i class="fas fa-check text-blue-800 mt-1 mr-2"></i>
                            <span>减少丢包率，避免网络过度拥塞</span>
                        </li>
                    </ul>
                </div>
                <div class="bg-white p-6 rounded-lg shadow-lg">
                    <h3 class="text-xl font-bold mb-4 flex items-center">
                        <span class="bg-blue-100 text-blue-800 p-2 rounded-lg mr-3">
                            <i class="fab fa-linux"></i>
                        </span>
                        CUBIC算法
                    </h3>
                    <p class="mb-4">Linux系统默认的TCP拥塞控制算法，采用立方函数增加拥塞窗口。</p>
                    <ul class="space-y-2">
                        <li class="flex items-start">
                            <i class="fas fa-check text-blue-800 mt-1 mr-2"></i>
                            <span>适合高延迟、高带宽网络</span>
                        </li>
                        <li class="flex items-start">
                            <i class="fas fa-check text-blue-800 mt-1 mr-2"></i>
                            <span>比传统Reno算法有更好吞吐量</span>
                        </li>
                    </ul>
                </div>
            </div>
            
            <div class="grid md:grid-cols-3 gap-6">
                <div class="card bg-white p-6 rounded-lg">
                    <h4 class="font-bold text-lg mb-3">Vegas</h4>
                    <p class="text-gray-600 mb-3">基于延迟进行拥塞控制，适合低延迟网络。</p>
                    <div class="text-blue-800">
                        <i class="fas fa-clock"></i> 延迟感知
                    </div>
                </div>
                <div class="card bg-white p-6 rounded-lg">
                    <h4 class="font-bold text-lg mb-3">Hybla</h4>
                    <p class="text-gray-600 mb-3">针对卫星链路和高延迟网络优化。</p>
                    <div class="text-blue-800">
                        <i class="fas fa-satellite"></i> 高延迟优化
                    </div>
                </div>
                <div class="card bg-white p-6 rounded-lg">
                    <h4 class="font-bold text-lg mb-3">ECN</h4>
                    <p class="text-gray-600 mb-3">通过标记包而非丢弃包实现拥塞控制。</p>
                    <div class="text-blue-800">
                        <i class="fas fa-tag"></i> 显式拥塞通知
                    </div>
                </div>
            </div>
        </div>
    </section>

    <!-- Conclusion Section -->
    <section class="py-16 px-4">
        <div class="container mx-auto max-w-3xl">
            <div class="bg-white p-8 rounded-lg shadow-lg text-center">
                <div class="text-5xl text-blue-800 mb-6">
                    <i class="fas fa-network-wired"></i>
                </div>
                <h2 class="text-3xl font-bold mb-4">TCP 拥塞控制：网络的智慧调节器</h2>
                <p class="text-lg mb-6">从慢启动到拥塞避免，从快速重传到各种优化算法，TCP拥塞控制机制就像一位经验丰富的交通警察，在网络这个复杂的高速公路上，不断调节数据包的流量，确保信息能够高效、可靠地到达目的地。</p>
                <p class="text-gray-600">随着网络技术的不断发展，TCP拥塞控制算法也在持续进化，以应对日益复杂的网络环境和不断增长的带宽需求。</p>
            </div>
        </div>
    </section>

    <!-- Footer -->
    <footer class="bg-gray-900 text-white py-10 px-4">
        <div class="container mx-auto max-w-5xl">
            <div class="flex flex-col md:flex-row justify-between items-center">
                <div class="mb-4 md:mb-0">
                    <h3 class="text-xl font-bold">技术小馆</h3>
                    <p class="text-gray-400">探索技术的无限可能</p>
                </div>
                <div>
                    <a href="http://www.yuque.com/jtostring" class="text-gray-300 hover:text-white transition-colors duration-300">
                        <i class="fas fa-globe mr-2"></i> http://www.yuque.com/jtostring
                    </a>
                </div>
            </div>
            <div class="border-t border-gray-800 mt-6 pt-6 text-center text-gray-400 text-sm">
                &copy; 2023 技术小馆. 保留所有权利.
            </div>
        </div>
    </footer>

    <script src="https://cdn.jsdelivr.net/npm/mermaid@latest/dist/mermaid.min.js"></script>
    <script>
        mermaid.initialize({
            startOnLoad: true,
            theme: 'default',
            flowchart: {
                useMaxWidth: true,
                htmlLabels: true,
                curve: 'basis'
            }
        });
    </script>
</body>
</html>